/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.faces.model.SelectItem;

public class Horario implements Serializable {
    private String nombreHorario;
    private String inicioHorario;
    private String finHorario;
    private boolean retorno;

    public Horario() {
    }

    public String getNombreHorario() {
        return nombreHorario;
    }

    public boolean isRetorno() {
        return retorno;
    }

    public void setRetorno(boolean retorno) {
        this.retorno = retorno;
    }

    public void setNombreHorario(String nombreHorario) {
        this.nombreHorario = nombreHorario;
    }
    
    public String getInicioHorario() {
        return inicioHorario;
    }

    public void setInicioHorario(String inicioHorario) {
        this.inicioHorario = inicioHorario;
    }

    public String getFinHorario() {
        return finHorario;
    }

    public void setFinHorario(String finHorario) {
        this.finHorario = finHorario;
    }
    
    
    //registrar
     public static boolean registrarHorario (Horario a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_registrarHorario "
                     +"(?,?,?,?)} ");
             st.setString(1,a.getNombreHorario());
             st.setString(2,a.getInicioHorario());
             st.setString(3,a.getFinHorario());
             st.registerOutParameter(4,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(4));
             if(a.isRetorno()==true)
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    } 
     
     //actualiza el estado del  detalle
    public static boolean actualizarHorario(Horario a){
            boolean estado=false;
            Connection conexion=null;
            try{
               conexion=ControladorBD.darConexionBD();
               CallableStatement st=conexion.prepareCall
                       ("{call sp_actualizarHorario(?,?,?)}");               
               st.setString(1,a.getNombreHorario());
               st.setString(2,a.getInicioHorario());
               st.setString(3,a.getFinHorario());
               st.execute();          
                   estado=true;
                st.close();
                conexion.close();
            }catch(Exception error){
                    System.out.println("Error en el metodo por: " + error.getMessage());
                    error.printStackTrace();
            }
            
            return estado;
    }
     
    //listar los horarios
     public static ArrayList<Horario> getListarHorario(Horario a){ 
     ArrayList<Horario> arreglo = new ArrayList<Horario>();
    if (arreglo.size()==0){         
        Horario obj=null;
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall
  ( "{call sp_listarHorario(?)}"); 
    st.setString(1, a.getNombreHorario());
    rs = st.executeQuery();        
    if (rs.next()){          
        do{
        obj =new Horario();
        obj.setNombreHorario(rs.getString("nombreHorario"));
        obj.setInicioHorario(rs.getString("inicioHorario"));
        obj.setFinHorario(rs.getString("finHorario"));
        arreglo.add(obj);
       } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      }  
    return arreglo;
    }
     
     /*
     * combo que carga los datos de la tabla parametro, segun el tipo de Parametro
     */
    public ArrayList<SelectItem>getCargarComboHorario(String nombre){         
    ArrayList<SelectItem> arrayNivel = new ArrayList<SelectItem>();
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall( "{call sp_listarHorario(?)}");
    st.setString(1,nombre);
    rs = st.executeQuery();        
    if (rs.next()){    
      do{
        arrayNivel.add(new SelectItem(rs.getString("inicioHorario")+"-"+rs.getString("finHorario"), 
                rs.getString("inicioHorario")+"-"+rs.getString("finHorario")));              
      } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      
    return arrayNivel;
    } 
     
     
}
